ViewModel একটি ডিজাইন প্যাটার্ন যা MVC (Model-View-Controller) আর্কিটেকচারে ব্যবহার করা হয়। এটি Model এবং View এর মধ্যে একটি মধ্যস্থতাকারী হিসেবে কাজ করে, যা শুধুমাত্র View এর জন্য প্রয়োজনীয় ডেটা ধারণ করে। ViewModel সাধারণত Model এর চেয়ে একটি আলাদা কাস্টম ডেটা কন্টেইনার হয়ে থাকে, যাতে View এর জন্য নির্দিষ্ট প্রয়োজনীয় ডেটা থাকে।
ASP.Net MVC এবং ASP.Net Core অ্যাপ্লিকেশনে ViewModel ব্যবহার ডেটার পার্সিং, ভিউ লজিক এবং UI উপস্থাপনাকে আরও দক্ষ ও পরিষ্কার করে তোলে।
ViewModel ব্যবহার করার মাধ্যমে আপনি Model এর বিভিন্ন ডেটা একত্রিত করে একটি বিশেষভাবে ফর্ম্যাট করা ডেটা স্ট্রাকচার তৈরি করতে পারেন, যা কেবলমাত্র ভিউর জন্য প্রাসঙ্গিক।
ধরা যাক, আমাদের একটি Product এবং Category মডেল রয়েছে এবং আমরা চাচ্ছি ভিউতে এই দুটি মডেল সংযুক্ত করে একটি ভিউ তৈরি করতে।
ViewModel Example:
public class ProductViewModel
{
public string ProductName { get; set; }
public decimal Price { get; set; }
public string CategoryName { get; set; }
}
এখানে, ProductViewModel ক্লাসে আমরা Product এবং Category এর কিছু ডেটা ধারণ করেছি, যা ভিউতে রেন্ডার হবে।
এখন Controller থেকে আমরা ProductViewModel পাঠাবো এবং ভিউতে রেন্ডার করব।
Controller Example:
public class ProductController : Controller
{
public IActionResult Index()
{
var products = new List<ProductViewModel>
{
new ProductViewModel { ProductName = "Laptop", Price = 1000, CategoryName = "Electronics" },
new ProductViewModel { ProductName = "Shirt", Price = 50, CategoryName = "Clothing" }
};
return View(products);
}
}
এখানে, Index() অ্যাকশনটি একটি List তৈরি করেছে এবং সেটি View এ পাঠাচ্ছে।
এখন আমরা View এ ProductViewModel এর ডেটা রেন্ডার করব।
View Example (Razor):
@model List<ProductViewModel>
<h1>Product List</h1>
<table>
<tr>
<th>Product Name</th>
<th>Price</th>
<th>Category</th>
</tr>
@foreach (var product in Model)
{
<tr>
<td>@product.ProductName</td>
<td>@product.Price</td>
<td>@product.CategoryName</td>
</tr>
}
</table>
এখানে, Model হয়ে List পাস করা হয়েছে। এরপর, আমরা foreach লুপ ব্যবহার করে প্রতিটি ProductViewModel এর প্রপার্টি (যেমন ProductName, Price, এবং CategoryName) ভিউতে প্রদর্শন করেছি।
ProductViewModel
।Validation: আপনি DataAnnotations ব্যবহার করে ViewModel এ ইনপুট ভ্যালিডেশন যুক্ত করতে পারেন। উদাহরণস্বরূপ:
public class ProductViewModel
{
[Required]
public string ProductName { get; set; }
[Range(1, 10000)]
public decimal Price { get; set; }
}
সারাংশ:
ViewModel ASP.Net MVC এবং ASP.Net Core অ্যাপ্লিকেশনে ডেটা এবং ভিউয়ের মধ্যে সম্পর্ক স্থাপনে গুরুত্বপূর্ণ ভূমিকা পালন করে। এটি ডেটাকে Controller থেকে View তে পাঠানোর একটি শক্তিশালী এবং ক্লিন পদ্ধতি সরবরাহ করে, যা অ্যাপ্লিকেশন উন্নত পারফরম্যান্স এবং স্কেলেবিলিটি প্রদান করতে সহায়ক।
Read more